package com.itheima.mydemo.test4;

public class Zi extends Fu{
    static {
        System.out.println("我是子类静态代码块");
    }
    {
        System.out.println("我是子类构造代码块");
    }

    /**
     * 我是父类静态代码块
     * 我是子类静态代码块
     * 我是父类构造代码块
     * 我是父类空参构造
     * 我是子类构造代码块
     * 我是子类空参构造
     *
     *访问过程:
     * 1.首先子类开始加载需要先加载父类
     * 2.父类加载时,static静态代码块随着类的加载而加载,并且只执行一次
     *              我是父类静态代码块
     * 3.父类加载后,子类开始加载,static静态代码块随着类的加载而加载,并且只执行一次
     *              我是子类静态代码块
     * 4.子类静态代码块执行完,开始执行构造方法,但构造方法前有构造方法块,理应先执行构造方法块,但在构造方法中
     *  调用了super();super()是调用父类构造函数，先有父亲，再有儿子，所以在super();之后。
     *  5.在开始调用父类构造方法时,因为构造方法前有构造方法块,所以先执行构造方法快
     *              我是父类构造代码块
     *  6.再执行父类构造方法
     *              我是父类空参构造
     *  7.执行完返回子类
     *              我是子类构造代码块
     *              我是子类空参构造
     */
    public Zi() {
        super();
        System.out.println("我是子类空参构造");
    }
}
